package model;

import java.util.HashMap;


public abstract class Pessoa extends AbstractModel {

	protected String cpf;
	protected String nome;
	protected String email;
	protected String senha;
	protected String profissao;
	protected String dataNascimento;
	protected Endereco endereco;

	public Pessoa() {
	}
	
	public Pessoa(int id, String cpf, String nome, String email, String senha,
			String profissao, String dataNascimento, Endereco endereco) {
		this.id = id;
		this.cpf = cpf;
		this.nome = nome;
		this.email = email;
		this.senha = senha;
		this.profissao = profissao;
		this.dataNascimento = dataNascimento;
		this.endereco = endereco;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getProfissao() {
		return profissao;
	}

	public void setProfissao(String profissao) {
		this.profissao = profissao;
	}

	public String getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	@Override
	public HashMap<String, Object> getDados() {
		HashMap<String, Object> map = new HashMap<String, Object>();

		map.put("cd_pessoa", this.getId());
		map.put("nm_pessoa", this.getNome());
		map.put("nr_cpf", this.getCpf());
		map.put("ds_email", this.getEmail());
		map.put("ds_senha", this.getSenha());
		map.put("ds_profissao", this.getProfissao());
		map.put("dt_nascimento", this.getDataNascimento());
		map.put("ds_logradouro", this.getEndereco().getLogradouro());
		map.put("ds_numero", this.getEndereco().getNumero());
		map.put("ds_cidade", this.getEndereco().getCidade());
		map.put("ds_cep", this.getEndereco().getCep());

		if (this instanceof Usuario) {
			map.put("tp_pessoa", "U");
			map.put("nm_dependente", ((Usuario) this).getNomeDependente());
			map.put("ds_email_dependente", ((Usuario) this).getEmailDependente());
			map.put("tp_status", ((Usuario) this).getStatus().getValue());
			map.put("dt_status", ((Usuario) this).getDataStatus());
		} else if (this instanceof Administrador) {
			map.put("tp_pessoa", "A");
		}

		return map;
	}

	@Override
	public String getTabela() {
		return "pessoa";
	}

	@Override
	public String getCampoId() {
		return "cd_pessoa";
	}
}